// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

#include "platform/unicode.h"

namespace dart {

// clang-format off
const uint8_t CaseMapping::stage1_[261] = {
  0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, 10, 6, 11, 6, 6, 12, 6, 6, 6,
  6, 6, 6, 6, 13, 14, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 15, 16, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 17, 6, 6, 6, 6,
  18,
};


const int16_t CaseMapping::stage2_[4864] = {
  // block 0
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 0, 0, 0, 0, 0,
  0, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 2973, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  130, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 130, 130, 130, 130, 0,
  130, 130, 130, 130, 130, 130, 130, 0,
  -127, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, -127, -127, -127, -127, 0,
  -127, -127, -127, -127, -127, -127, -127, 485,
  // block 1
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  -794, -927, 6, -3, 6, -3, 6, -3,
  0, 6, -3, 6, -3, 6, -3, 6,
  -3, 6, -3, 6, -3, 6, -3, 6,
  -3, 0, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  -482, 6, -3, 6, -3, 6, -3, -1199,
  781, 842, 6, -3, 6, -3, 826, 6,
  -3, 822, 822, 6, -3, 0, 318, 810,
  814, 6, -3, 822, 830, 389, 846, 838,
  6, -3, 653, 0, 846, 854, 521, 858,
  6, -3, 6, -3, 6, -3, 874, 6,
  -3, 874, 0, 0, 6, -3, 874, 6,
  -3, 870, 870, 6, -3, 6, -3, 878,
  6, -3, 0, 0, 6, -3, 0, 225,
  0, 0, 0, 0, 10, 3, -7, 10,
  7, -7, 10, 11, -7, 6, -3, 6,
  -3, 6, -3, 6, -3, 6, -3, 6,
  -3, 6, -3, 6, -3, -315, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  0, 10, 15, -7, 6, -3, -386, -222,
  6, -3, 6, -3, 6, -3, 6, -3,
  // block 2
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  -518, 0, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 0, 0, 0, 0,
  0, 0, 19, 6, -3, -650, 23, 0,
  0, 6, -3, -778, 278, 286, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  27, 31, 0, -839, -823, 0, -819, -819,
  0, -807, 0, -811, 0, 0, 0, 0,
  -819, 0, 0, -827, 0, 0, 0, 0,
  -835, -843, 0, 35, 0, 0, 0, -843,
  0, 39, -851, 0, 0, -855, 0, 0,
  0, 0, 0, 0, 0, 43, 0, 0,
  -871, 0, 0, -871, 0, 0, 0, 0,
  -871, -275, -867, -867, -283, 0, 0, 0,
  0, 0, -875, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 3
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 337, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  6, -3, 6, -3, 0, 0, 6, -3,
  0, 0, 0, 521, 521, 521, 0, 0,
  0, 0, 0, 0, 0, 0, 154, 0,
  150, 150, 150, 0, 258, 0, 254, 254,
  0, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 0, 130, 130, 130, 130, 130,
  130, 130, 130, 130, -151, -147, -147, -147,
  0, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -123, -127, -127, -127, -127, -127,
  -127, -127, -127, -127, -255, -251, -251, 34,
  -247, -227, 0, 0, 0, -187, -215, -31,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  -343, -319, 29, 0, -238, -383, 0, 6,
  -3, -26, 6, -3, 0, -518, -518, -518,
  // block 4
  322, 322, 322, 322, 322, 322, 322, 322,
  322, 322, 322, 322, 322, 322, 322, 322,
  130, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 130, 130, 130, 130, 130,
  -127, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, -127, -127, -127, -127, -127,
  -319, -319, -319, -319, -319, -319, -319, -319,
  -319, -319, -319, -319, -319, -319, -319, -319,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 0, 0, 0, 0, 0, 0,
  0, 0, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  62, 6, -3, 6, -3, 6, -3, 6,
  -3, 6, -3, 6, -3, 6, -3, -59,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  // block 5
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 194, 194, 194, 194, 194, 194, 194,
  194, 194, 194, 194, 194, 194, 194, 194,
  194, 194, 194, 194, 194, 194, 194, 194,
  194, 194, 194, 194, 194, 194, 194, 194,
  194, 194, 194, 194, 194, 194, 194, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, -191, -191, -191, -191, -191, -191, -191,
  -191, -191, -191, -191, -191, -191, -191, -191,
  -191, -191, -191, -191, -191, -191, -191, -191,
  -191, -191, -191, -191, -191, -191, -191, -191,
  -191, -191, -191, -191, -191, -191, -191, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 6
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 7
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  29058, 29058, 29058, 29058, 29058, 29058, 29058, 29058,
  29058, 29058, 29058, 29058, 29058, 29058, 29058, 29058,
  29058, 29058, 29058, 29058, 29058, 29058, 29058, 29058,
  29058, 29058, 29058, 29058, 29058, 29058, 29058, 29058,
  29058, 29058, 29058, 29058, 29058, 29058, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 8
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 47, 0, 0, 0, 15257, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 9
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 0, 0,
  0, 0, 0, -235, 0, 0, -30458, 0,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  // block 10
  33, 33, 33, 33, 33, 33, 33, 33,
  -30, -30, -30, -30, -30, -30, -30, -30,
  33, 33, 33, 33, 33, 33, 0, 0,
  -30, -30, -30, -30, -30, -30, 0, 0,
  33, 33, 33, 33, 33, 33, 33, 33,
  -30, -30, -30, -30, -30, -30, -30, -30,
  33, 33, 33, 33, 33, 33, 33, 33,
  -30, -30, -30, -30, -30, -30, -30, -30,
  33, 33, 33, 33, 33, 33, 0, 0,
  -30, -30, -30, -30, -30, -30, 0, 0,
  0, 33, 0, 33, 0, 33, 0, 33,
  0, -30, 0, -30, 0, -30, 0, -30,
  33, 33, 33, 33, 33, 33, 33, 33,
  -30, -30, -30, -30, -30, -30, -30, -30,
  297, 297, 345, 345, 345, 345, 401, 401,
  513, 513, 449, 449, 505, 505, 0, 0,
  33, 33, 33, 33, 33, 33, 33, 33,
  -30, -30, -30, -30, -30, -30, -30, -30,
  33, 33, 33, 33, 33, 33, 33, 33,
  -30, -30, -30, -30, -30, -30, -30, -30,
  33, 33, 33, 33, 33, 33, 33, 33,
  -30, -30, -30, -30, -30, -30, -30, -30,
  33, 33, 0, 37, 0, 0, 0, 0,
  -30, -30, -294, -294, -34, 0, -28819, 0,
  0, 0, 0, 37, 0, 0, 0, 0,
  -342, -342, -342, -342, -34, 0, 0, 0,
  33, 33, 0, 0, 0, 0, 0, 0,
  -30, -30, -398, -398, 0, 0, 0, 0,
  33, 33, 0, 0, 0, 29, 0, 0,
  -30, -30, -446, -446, -26, 0, 0, 0,
  0, 0, 0, 37, 0, 0, 0, 0,
  -510, -510, -502, -502, -34, 0, 0, 0,
  // block 11
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, -30066, 0,
  0, 0, 51, 55, 0, 0, 0, 0,
  0, 0, 114, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, -111, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  66, 66, 66, 66, 66, 66, 66, 66,
  66, 66, 66, 66, 66, 66, 66, 66,
  -63, -63, -63, -63, -63, -63, -63, -63,
  -63, -63, -63, -63, -63, -63, -63, -63,
  0, 0, 0, 6, -3, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 12
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 106, 106,
  106, 106, 106, 106, 106, 106, 106, 106,
  106, 106, 106, 106, 106, 106, 106, 106,
  106, 106, 106, 106, 106, 106, 106, 106,
  -103, -103, -103, -103, -103, -103, -103, -103,
  -103, -103, -103, -103, -103, -103, -103, -103,
  -103, -103, -103, -103, -103, -103, -103, -103,
  -103, -103, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 13
  194, 194, 194, 194, 194, 194, 194, 194,
  194, 194, 194, 194, 194, 194, 194, 194,
  194, 194, 194, 194, 194, 194, 194, 194,
  194, 194, 194, 194, 194, 194, 194, 194,
  194, 194, 194, 194, 194, 194, 194, 194,
  194, 194, 194, 194, 194, 194, 194, 0,
  -191, -191, -191, -191, -191, -191, -191, -191,
  -191, -191, -191, -191, -191, -191, -191, -191,
  -191, -191, -191, -191, -191, -191, -191, -191,
  -191, -191, -191, -191, -191, -191, -191, -191,
  -191, -191, -191, -191, -191, -191, -191, -191,
  -191, -191, -191, -191, -191, -191, -191, 0,
  6, -3, 59, -15254, 63, 67, 71, 6,
  -3, 6, -3, 6, -3, 75, 79, 83,
  0, 0, 6, -3, 0, 6, -3, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 14
  -29055, -29055, -29055, -29055, -29055, -29055, -29055, -29055,
  -29055, -29055, -29055, -29055, -29055, -29055, -29055, -29055,
  -29055, -29055, -29055, -29055, -29055, -29055, -29055, -29055,
  -29055, -29055, -29055, -29055, -29055, -29055, -29055, -29055,
  -29055, -29055, -29055, -29055, -29055, -29055, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 15
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  0, 0, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 16
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  0, 0, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 6, -3, 6, -3, 87, 6, -3,
  6, -3, 6, -3, 6, -3, 6, -3,
  0, 0, 0, 6, -3, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 17
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 130, 130, 130, 130, 130,
  130, 130, 130, 0, 0, 0, 0, 0,
  0, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, -127, -127, -127, -127, -127,
  -127, -127, -127, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  // block 18
  162, 162, 162, 162, 162, 162, 162, 162,
  162, 162, 162, 162, 162, 162, 162, 162,
  162, 162, 162, 162, 162, 162, 162, 162,
  162, 162, 162, 162, 162, 162, 162, 162,
  162, 162, 162, 162, 162, 162, 162, 162,
  -159, -159, -159, -159, -159, -159, -159, -159,
  -159, -159, -159, -159, -159, -159, -159, -159,
  -159, -159, -159, -159, -159, -159, -159, -159,
  -159, -159, -159, -159, -159, -159, -159, -159,
  -159, -159, -159, -159, -159, -159, -159, -159,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
};


const int32_t CaseMapping::stage2_exception_[22][2] = {
  { -1, 1 },  // U+01C5
  { -1, 1 },  // U+01C8
  { -1, 1 },  // U+01CB
  { -1, 1 },  // U+01F2
  { 0, 10795 },  // U+023A
  { 0, 10792 },  // U+023E
  { 10783, 0 },  // U+0250
  { 10780, 0 },  // U+0251
  { 10743, 0 },  // U+026B
  { 10749, 0 },  // U+0271
  { 10727, 0 },  // U+027D
  { 35332, 0 },  // U+1D79
  { 0, -8383 },  // U+212A
  { 0, -8262 },  // U+212B
  { 0, -10743 },  // U+2C62
  { 0, -10727 },  // U+2C64
  { -10795, 0 },  // U+2C65
  { -10792, 0 },  // U+2C66
  { 0, -10780 },  // U+2C6D
  { 0, -10749 },  // U+2C6E
  { 0, -10783 },  // U+2C6F
  { 0, -35332 },  // U+A77D
};
// clang-format on

}  // namespace dart
